Driving a user experience of a web application using rules that establish or change requests based on user behavior

ABSTRACT

A set of hypertext transfer protocol (HTTP) requests for Web application content can be routed from a client computing device to a Web server. The routed HTTP requests can be analyzed for patterns indicative of user interest in a business offering available via the Web application. An unrequested HTTP request can be conveyed to the Web server for Web application content that was not explicitly requested from the client computing device. The Web server can convey a response to the unrequested HTTP request that provides content from the Web application related specifically to the user interest. The response can cause a user interface of a Web browser of the client computing device to display the content that is related to the user interest.

BACKGROUND

The present invention relates to the field of Web applications.

Web applications are generally constructed to suit the needs of anaverage or baseline user. This can be a challenge for Web sites thatsupport multiple different options and multiple different types ofusers. For example, a Web site can be for a service-based business, suchas a health care business, an insurance company, a law firm, and thelike. Such a Web site is typically designed to provide information toexisting users about their current account status, to permit existingusers to make changes to their account information online, and to permitexisting users to engage in additional services. At the same time, theWeb site provides information to new users. For example, new users canbe offered products and services in hopes of generating new businessrelationships with these potential customers. From the above, it isevident that many Web sites and/or Web applications are designed tocater to multiple different types of users having differentuser-specific needs.

To assess these needs and provide a suitable user experience, aniterative software development lifecycle is typically used to developand refine the Web site and/or Web application. In this lifecycle, aninitial software prototype is developed, which may undergo userexperience testing. Feedback from the user experience testing can resultin changes to the user interface. Ultimately, a versioned Web site ispublicly released. After release, feedback can be received from usersand/or other metrics can be gathered. The feedback and metrics can beconsidered by a development team, which can be used to improve the userexperience in a next iterative public release of the Web site and/or Webapplication.

BRIEF SUMMARY

One aspect of the disclosure can include a method, computer programproduct, apparatus, and system. In this aspect, a set of one or moreRESTful requests can be received from a client computing device. Each ofthe RESTful requests can include a resource identifier that uniquelyidentifies a Web resource provided by a Web server. At least one patterncan be determined from analyzing the set of RESTful requests. Thepattern can be compared against a set of previously establishedpatterns. Each of the previously established patterns can be indexedagainst a resource identifier of the Web server. Results from thecomparing can include a match of at least one pattern to a correspondingpreviously established pattern. A RESTful request can be conveyed to theWeb server for the Web resource identified by the matched resourceidentifier. The RESTful request can cause the Web server to serve theWeb resource identified by the matched resource identifier to the clientcomputing device.

In another aspect of the disclosure, a set of hypertext transferprotocol (HTTP) requests for Web application content can be routed froma client computing device to a Web server. The routed HTTP requests canbe analyzed for patterns indicative of user interest in a businessoffering available via the Web application. An unrequested (by a user)HTTP request can be conveyed to the Web server. The HTTP request can beone that was not explicitly requested by a user of the client computingdevice. The Web server can convey a response to the HTTP request. Theresponse can provide content from the Web application relatedspecifically to the user interest. The response can cause a userinterface of a Web browser of the client computing device to display thecontent that is related to the user interest. Thus, the user experienceof the Web application is modified based on the detected pattern andbased on the inferred user interest. In one embodiment, thismodification to the user experience can occur without modifying code ofthe Web application.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

FIG. 1 is a system for adjusting a user's experience with a Webapplication using behavior driven rules in accordance with an embodimentof the disclosure.

FIG. 2 shows a flow chart of a method for adjusting a user experiencefor a Web application based on user behavior in accordance with anembodiment of the disclosure.

FIG. 3 shows a flow chart of a method for triggering actions responsiveto a rule being satisfied in accordance with an embodiment of thedisclosure.

DETAILED DESCRIPTION

Problems exist with changing a user experience of a Web applicationthrough iterative software releases of a Web application. Fundamentally,most Web application development cycles require the hard-coded logic ofthe Web application to be changed on a version-by-version basis. A newrelease must be developed, coded, tested, approved, and released. Afterthe time required for these actions, many missed opportunities canresult in the interim. Further, Web applications are often required tobe more adaptive than other types of software programs; else customerscan be easily lured to more attractive Web applications offered bycompetitors. Accordingly, missed opportunities and an inability tonimbly adjust to current trends and market desires can mark a differentbetween a highly successful Web application and one that is a failure.

Turning back to the software development lifecycle, it should beobserved that in a conventional lifecycle process is iterative.Additionally, most Web applications use hard coded logic to detect userbehavior (if the Web applications are adaptive to user behavior at all).Conventional Web applications often provide help menus to suggest how touse the application. Extensive use of help menus represents a paradigmwhere users are required to adapt to and learn the user interface of theWeb application; instead of attempting to adapt the user interface tosuit behavior of the user.

The software development cycle often uses usability testing to gatherfeedback for providing a better user experience. The feedback can begathered from text users using a product under-test (e.g., a betaversion of an upcoming release) or by data mining against server logs ofa real-time system. Usability issues detected from this feedback canresult in new hard coded logic or help menus being incorporated infuture releases of the Web application. However, often the usersparticipating in testing are not an accurate representation of the userpopulation. Thus, a real user is often disconnected from the process ofmodifying the user experience.

The present disclosure provides a system able to adjust a user'sexperience without changing Web application code. The disclosurecaptures a set of HTTP requests and discerns patterns from theserequests. From these patterns, a user's intension or desires can beinferred. For example, when a user spends a significant time reading aWeb page, it can be assumed that the user is interested in the contentof that page. Similarly, when a user quickly navigates between pageshaving a commonality, it can be inferred that the user is interested inthat commonality, but hasn't found information he/she is looking for (oris interested in). Typically, this inability of a user to find desiredcontent can result in a lost opportunity (the user leaving the Website). The disclosure is able to create a request for content (issue anHTTP request) that targets the user interest, which results in thatinformation being presented to the user without the user explicitlyhaving to request the content.

As will be appreciated by one skilled in the art, aspects of the presentinvention may be embodied as a system, method or computer programproduct. Accordingly, aspects of the present invention may take the formof an entirely hardware embodiment, an entirely software embodiment(including firmware, resident software, micro-code, etc.) or anembodiment combining software and hardware aspects that may allgenerally be referred to herein as a “circuit,” “module” or “system.”Furthermore, aspects of the present invention may take the form of acomputer program product embodied in one or more computer readablemedium(s) having computer readable program code embodied thereon.

Any combination of one or more computer readable medium(s) may beutilized. The computer readable medium may be a computer readable signalmedium or a computer readable storage medium. A computer readablestorage medium may be, for example, but not limited to, an electronic,magnetic, optical, electromagnetic, infrared, or semiconductor system,apparatus, or device, or any suitable combination of the foregoing. Morespecific examples (a non-exhaustive list) of the computer readablestorage medium would include the following: an electrical connectionhaving one or more wires, a portable computer diskette, a hard disk, arandom access memory (RAM), a read-only memory (ROM), an erasableprogrammable read-only memory (EPROM or Flash memory), an optical fiber,a portable compact disc read-only memory (CD-ROM), an optical storagedevice, a magnetic storage device, or any suitable combination of theforegoing. In the context of this document, a computer readable storagemedium may be any tangible medium that can contain, or store a programfor use by or in connection with an instruction execution system,apparatus, or device.

A computer readable signal medium may include a propagated data signalwith computer readable program code embodied therein, for example, inbaseband or as part of a carrier wave. Such a propagated signal may takeany of a variety of forms, including, but not limited to,electro-magnetic, optical, or any suitable combination thereof. Acomputer readable signal medium may be any computer readable medium thatis not a computer readable storage medium and that can communicate,propagate, or transport a program for use by or in connection with aninstruction execution system, apparatus, or device.

Program code embodied on a computer readable medium may be transmittedusing any appropriate medium, including but not limited to wireless,wireline, optical fiber cable, RF, etc., or any suitable combination ofthe foregoing. Computer program code for carrying out operations foraspects of the present invention may be written in any combination ofone or more programming languages, including an object orientedprogramming language such as Java, Smalltalk, C++ or the like andconventional procedural programming languages, such as the “C”programming language or similar programming languages. The program codemay execute entirely on the user's computer, partly on the user'scomputer, as a stand-alone software package, partly on the user'scomputer and partly on a remote computer or entirely on the remotecomputer or server. In the latter scenario, the remote computer may beconnected to the user's computer through any type of network, includinga local area network (LAN) or a wide area network (WAN), or theconnection may be made to an external computer (for example, through theInternet using an Internet Service Provider).

Aspects of the present invention are described below with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems) and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer program instructions. These computer program instructions maybe provided to a processor of a general purpose computer, specialpurpose computer, or other programmable data processing apparatus toproduce a machine, such that the instructions, which execute via theprocessor of the computer or other programmable data processingapparatus, create means for implementing the functions/acts specified inthe flowchart and/or block diagram block or blocks.

These computer program instructions may also be stored in a computerreadable medium that can direct a computer, other programmable dataprocessing apparatus, or other devices to function in a particularmanner, such that the instructions stored in the computer readablemedium produce an article of manufacture including instructions whichimplement the function/act specified in the flowchart and/or blockdiagram block or blocks.

The computer program instructions may also be loaded onto a computer,other programmable data processing apparatus, or other devices to causea series of operational steps to be performed on the computer, otherprogrammable apparatus or other devices to produce a computerimplemented process such that the instructions which execute on thecomputer or other programmable apparatus provide processes forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks.

FIG. 1 is a system for adjusting a user's experience with a Webapplication using behavior driven rules in accordance with an embodimentof the disclosure. The user behavior can be determined from a set ofactions 150, 152, 154, which can include Hypertext Transfer Protocol(HTTP) requests directed towards one or more Web servers 140; otherRESTful requests can also be used. A user experience adjustor 130 candetermine the user behavior by intercepting the actions 150-154. In oneembodiment, patterns can be determined from the actions 150, 152, 154. Aset of configurable rules established in a data store 132 can be drivenby the patterns. These patterns can cause a user to be redirected to anaddress of a Web server 140 (e.g., a Uniform Resource Identifier (URI)),which a request issuing client device 110, 112, 114 did not explicitlyrequest. In one embodiment, the redirected address can be associatedwith a business function. The business function can be an action or setof actions that are taken in response to the user's behavior (actions150-154), which alter a user's experience with a Web application 146.Thus, a user's experience with a Web application 147 is dynamicallyadjusted for the user's behavior. These adjustments can be performed inaccordance to a set of rules of data store 132. Consequently, the userspecific adjustments are configurable by changing the rules of datastore 132 and are not dependent on code logic of the Web application 146itself.

To elaborate further, the actions 150, 152, 154 can be used by the userexperience adjustor 130 to establish patterns (in data store) 132indicative of user behavior and/or a Web application 146 state. Thesepatterns/behavior can be session and/or user specific. Thus, they willvary from one device 110-114 to another. Hence, at a time that thecomputing devices 110-114 send a request 160-164 (labeled A-C) to theWeb server 140, the adjustor 130 can cause different responses 170-174to be generated. This is true even when the requests 160-164 areidentical to each other. Stated differently, even though the requests160-164 from the client can be identical, the corresponding requests166-168 conveyed from the adjustor 130 to the Web server 140 (whichresult in the responses 170-174) can be different from each other.

For example, the adjustor 130 can route the request 160 (fromclient—Request A) through to the Web server 140 without change ormodification, so that the request 166 (from Adjustor—Request A) sent tothe Web server 140 is the same as the request 160 sent from device 110.The request 162 (from client—Request B) from device 112 can correspondto a request 167 (from Adjustor—Request B) sent from adjustor 130, eventhough request 162 is different from request 167. The request 164 (fromclient—Request C) from device 114 can correspond to a request 168 (fromAdjustor—Request C) sent from adjustor 130, even though request 164 isdifferent from request 168.

Process 180 shows a stage-wise breakdown of one embodiment of thedisclosure. Step 182 shows that a Web application (e.g., Web application146) can be constructed that maps rules or RESTful style constraints tobusiness functions (in one embodiment, the rules can be implemented byuser experience adjustor 130, and the mappings can be recorded in datastore 132). That is, the rules or RESTful constraints can standardizecapturing browser (e.g., browser 120, 122, 124) events and can map theseevents to business events or business functions. Step 184 creates therules and maps business functions to user behavior. For example, HTTPrequests (events) can be mapped using HTTP request verbs. That is, GET,POST, or DELETE (RESTful request verbs) can be mapped to particularactions of the Web application (e.g., application 146).

Step 186 can map user behavior to Web application resource addresses.The Web application resource addresses can be unique uniform resourceidentifiers (URI's) in one embodiment. Each URI can correspond to aparticular portion or function of the Web application 146. In otherwords, the RESTful style constraint can be a URI built with a structurethat permits it to be parsed and mapped to business functions or events(e.g., www.example.com/Product/Component/Subcomponent/action).Additionally, other parameters in the request (e.g., request 160, 162,164) can be parsed or extracted by following usage patterns. Forexample, URL parameters can be parsed from the requests to determinewhat stage a user is at in a Web application 146. Stage may have to beinferred using inference rules and patterns, as the Web application 146itself may be implemented in a stateless fashion.

In step 188, once all the mappings have been established and the rulesconstructed, runtime user experience changes can be implemented. Forexample, user requests (160, 162, 164) can be rerouted (by adjustor 130)to Web application (146) addresses based on the user behavior. Usebehavior can be determined from patterns detected by analyzing theRESTful requests (actions 150-154 and requests 160-164).

In system, a set of different computing devices 110, 112, 114 can becommunicatively linked to a Web server 140 via a network. The userexperience adjustor 130 can be implemented between the pathway of thecomputing device 110 and the Web server 140. In various embodiments, theadjustor 130 can be implemented as client-side software (of device 110,112, 114), as server-side software (of Web server 140), as softwareexecuting within a network element (connected to a network connectingdevice 110, 112, 114 and server 140), or as a distributed functionalityimplemented within a combination of client 110, 112, 114, server 140,and/or a network element.

Each of the computing devices 110-114 and server 140 can include atleast one processor, circuitry, storage medium, peripheral, networkinterface, and/or other components; all communicatively linked to eachother via a bus. The processor of each device 110-114 and 140 canexecute computer readable instructions. Devices 110-114 can includeclient-side software (Web browser 120-124) for interacting with the Webserver 140. Server 140 can include an application server 142.

Each computing devices 110-114 can be a personal computer, a notebookcomputer, a netbook, a kiosk, a mobile phone, and the like. The Webserver 140 can be a stand-alone computing device, a distributed set ofcomputing devices, and/or a virtual server implemented usingvirtualization software.

Each Web browser 120, 122, 124, also referred to as an internet browser,can be a software application for retrieving, presenting, and traversinginformation resources on the Web. The information resources can beidentified by a URI and can include a Web page, image, video, or othersuch content. The Web browser 120, 122, 124 can translate hypertextmarkup language (HTML) formatting for visual and/or audible presentationto a user. HTML formatting can be of a variety of more specific formatsthat conform to a standard generalized markup language (SGML) basedlanguage. Each Web browser 120, 122, 124 can support a variety ofprotocols for moving content over a network, such as File TransferProtocol (FTP), Transmission Control Protocol (TCP) and the InternetProtocol (IP) (collectively referred to as TCP/IP), and the like.Examples of Web browser 120, 122, 124 include, but are not limited to,INTERNET EXPLORER, FIREFOX, OPERA, CHROME, SAFARI, and the like. In oneembodiment, Web browsers 120, 122, 124 can include a rich internetinterface (RII), a Web enabled gadget, and other types of applicationable to render a Web application 146.

The Web server 140 can be a hardware device that helps to delivercontent over a network. Web server 140 can execute Web applicationserver 142, which is a software program that is able to respond torequests 160-164 for content that conform to HTTP, Internet MessageAccess Protocol (IMAP), FTP, or other such standards. The Webapplication server 142 can deliver Web pages, each being a markupdocument conforming to an SGML based language, to clients (e.g., devices110-114). In one embodiment, Web application server 142 can deliverimages, style sheet, scripts (e.g., JAVASCRIPTS), the like as well asmarkup documents. In one embodiment, the Web application server 142 cansupport server-side scripting. Stated another way, the Web server 140executing application server 142 can host a Web application 146, a Website, or other set of remotely retrievable set of internet resources.Examples of Web application server 142 include, but are not limited to,APACHE WEB SERVER, Internet Information Services (IIS) server, CHEROKEE,ABYSS WEB SERVER, IBM HTTP SERVER (IHS), and the like.

The Web application 146 can use a set of web documents 147 written in astandard format supported by Web browsers 120, 122, 124. In oneembodiment, each individual page or document 147 of the Web application146 can be delivered to the requesting client (device 110-114) as astatic document, but the sequence of pages 147 can provide aninteractive experience. The Web application 146 can include static anddynamic elements in one embodiment. For example, JAVA, JAVASCRIPT,dynamic hypertext markup language (DHTML), FLASH, SILVERLIGHT, and othertechnologies (together indicated as non-static elements 148) can beutilized.

A network connecting device 110-114, server 140 and user experienceadjustor 130 can include any hardware/software/and firmware necessary toconvey digital content encoded within carrier waves. Content can becontained within analog or digital signals and conveyed through data orvoice channels and can be conveyed over a personal area network (PAN) ora wide area network (WAN). The network can include local components anddata pathways necessary for communications to be exchanged amongcomputing device components and between integrated device components andperipheral devices. The network can also include network equipment, suchas routers, data lines, hubs, and intermediary servers which togetherform a packet-based network, such as the Internet or an intranet. Thenetwork can further include circuit-based communication components andmobile communication components, such as telephony switches, modems,cellular communication towers, and the like. The network can includeline based and/or wireless communication pathways.

Each device 110-114 and server 140 can include a data store, such asdata store 132 and 144, which is physically implemented within any typeof hardware including, but not limited to, a magnetic disk, an opticaldisk, a semiconductor memory, a digitally encoded plastic memory, aholographic memory, or any other recording medium. The data stores canbe a stand-alone storage unit as well as a storage unit formed from aplurality of physical devices, which may be remotely located from oneanother. Additionally, information can be stored within each data storein a variety of manners. For example, information can be stored within adatabase structure or can be stored within one or more files of a filestorage system, where each file may or may not be indexed forinformation searching purposes.

In one embodiment, the user experience adjustor 130 can be a standardsbased rules engine that allows a non-technical person to use a userinterface to define a set of business events or patterns of businessevents to observe over a designated time frame. Adjustor 130 can allowthe non-technical person to tailor some action taken by a Webapplication server responsive to a request based on the observed set ofevents and/or patterns. The action taken by the adjustor 130 can producea change to the user experience by modifying the request. That is, therequest sent by the adjustor 130 to a Web server 140 can be one that isnever explicitly sent by a client device 110, 112, 114. Stateddifferently, the adjustor 130 can map a business event back to a HTTPrequest using similar constraints to those enforced in a design of eachHTTP request to facilitate mapping to business events.

To illustrate adjustor 130 in operation, the following use case isprovided. The context for the use case is a health care insurance vendorWebsite (e.g., the Web application). Assume a customer of the Web siteis interested in purchasing health insurance. This user pursues the Website in a normal fashion, tries out a few quotes, but fails to quicklyfind quotes for the exact features he/she is interested in. In a normalcourse of events, this user would leave the Web site for another, andultimately not make a purchase through the Web site.

In a system that includes the user experience adjustor 130, however, ausage pattern can be discerned from the behavior of the user with theWeb site. Specifically, the user experience adjustor 130 can analyzewhich portions (pages) of the Web site the user spent the most timeviewing, which types of products the user was looking at, and other suchclues. Based on these clues and determined patterns, the user'sexperience with the health care Web site can be personalized anddynamically adjusted (i.e., HTTP requests can be submitted by theadjustor 130 and/or user issued HTTP request can be modified by theadjustor 130) to direct and corral the user to the best product offeringfor the user. These adjustments can lead to more sale closures and toincreased effectiveness of the Web site.

To continue with the use case. Assume the following rule is included indata store 132 for use by the adjustor 130:

IF the user is spending time in our health plans documents section AND

IF the user is using the search health plans gadget OR

IF the user has entered some personal details

This rule can be considered the “pattern” that the adjustor 130 detectsfrom the actions 150, 152, 154. It should be appreciated that the aboverule is written in a non-technical manner, which a health care analystcan establish. In one contemplated embodiment, the adjustor 130 canaccept “natural language” rules, such as the one above and use them tobuild a deterministic (or heuristic) pattern discernable from theactions 150, 152, 154. Any number of pattern matching techniques andtechnologies can be utilized to this effect. In a different embodimentof the disclosure, the rules used by the adjustor 130 may have to bemore defined, such as:

-   -   IF (“a user spends at least 15 minutes viewing any Web site in        the set of (Page 1, Page 3, Page 4, Page 6) AND    -   IF (last user request for URI XXXXX) (equates to search health        plan gadget) OR    -   IF (at least four of: user name, location, occupation, family        status, address, phone number, age) KNOWN

Graphical user interfaces, selection mechanism, rules based programminglanguages, and the like can be used in various embodiments to specifythe rules used by adjustor 130.

The above patterns can be matched to business rules and/or specific Webapplication resources. For example, the rule above could be mapped toany of the below resources:

Resource A:

-   -   “We see that you are interested in xyz. Based on your personal        information that you provided, may we suggest you look at XXX        (link) or YYY (link)?:

Resource B:

-   -   “We see you are interested in xyz. Can we call you and help        explain these plans to you? (Yes/No)

Resource C:

-   -   “You seem to have difficulty completing this form—here are some        links (link A) (link B) (link C) to tutorials.”

As noted above, multiple possibilities exist. Each of these can beassociated with an addressable resource (e.g., a URI) or a callableoption (i.e., trigger popup providing an option to contact a human agentor have a human agent contact you). In one embodiment, the selected oneof the options (e.g., Resource A, B, or C) can depend on a systemdeterminable condition. For example, an option to speak with a humanagent may only be presented when an agent is available. An option for aspecial may only be presented if other configurable criteria are met.

It should be appreciated that the above use case is a simple exampleprovided to demonstrate capabilities of the adjustor 130. The disclosureand its capabilities are not to be limited by any specifics contained inthe use case example.

FIG. 2 shows a flow chart of a method 200 for adjusting a userexperience for a Web application based on user behavior in accordancewith an embodiment of the disclosure. In one embodiment, the method 200can be performed in context of the system of FIG. 1.

Method 200 can begin in step 205, where a RESTful request can bereceived for a Web application resource. In one embodiment, the RESTfulrequest can be a HTTP request and the Web application resource can be auniquely identified resource (e.g., a URI, a unique domain name, etc.).In step 210, the request can be stored and analyzed inrelationship/conjunction with a set of other recorded requests todetermine a pattern. The pattern can be based be used to determine auser interest that corresponds to a business objective or function. Forexample, a user's focus (as determined by analyzing a set of RESTfulrequests) on a specific set of Web pages for a pre-designated durationscan indicate an interest or a lack of interest in a specific offering ofa Web application.

In step 215, a pattern can be detected, which can involve matching apattern determined from the requests against one of a set of previouslydefined patterns. If no pattern is detected from the analysis, themethod can progress from step 215 to step 220. In step 220, a behaviortracking event can be detected, where the event relates to whether ornot to perform a reset. For example, one reset event can be toautomatically stop recording RESTful requests to determine patterns on aper-session basis. Another example of a reset event is when a user optsto leave a Web application (i.e., when patterns are to be based on aper-Web Application usage basis). Another reset event can be based on aparticular period of inactivity (i.e., reset event occurs whenever auser provides no new requests for at least an hour). If a reset event isnot detected, the method can loop to step 205, where additional RESTfulrequests can be received and processed.

If a reset event is detected, behavior for the period can be optionallyrecorded in a repository and indexed to the user's identity, as shown bystep 225. This information can be used to develop a user profile, whichis used to determine behavior, preferences in general, and the like.Step 230 can end the process after step 225 is performed.

A detected pattern can be recorded in step 255. The recorded pattern canbe compared to a set of previously established rules, as indicated bystep 260. The rules of step 260 can be dependent upon a single pattern,upon an occurrence of multiple patterns, or upon the occurrence of oneor more patterns and a set of additional programmatically determinedconditions. Each time a rule is satisfied, a set of one or moreprogrammatic actions can be triggered in response as shown by step 265.If there are more rules to be compared in step 270, the method canprogress from step 270 to step 260, where the comparison and selectivetriggering process continues. When there are no more rules to becompared to the pattern, the method can progress to step 205, whereadditional RESTful requests can be received.

FIG. 3 shows a flow chart of a method 300 where actions can be takenresponsive to a rule being satisfied in accordance with an embodiment ofthe disclosure. That is, method 300 can represent one embodiment of aset of actions that occur in step 365 of method 300.

Method 300 can begin in step 305, where an effect of a satisfied rulecan be determined given the current “state” of the Web application. Itshould be emphasized the current state can be determined from analyzingpatterns resulting from stateless or RESTful commands, such as HTTPcommands conveyed from a user to a Web server. In one embodiment, valuesinput in fields of the Web application by a user can also be analyzedand used to determine the “state” of the Web application. This is trueeven though the Web application itself may or may not persist thisinformation. For example, in one embodiment, the “state” of the Webapplication can be determined by a network element distinct from the Webserver, which intercepts Web server requests from a client.

Satisfaction of a rule may or may not produce variable effects, asexpressed by step 310. A variable effect can represent an effect thatvaries based on additional factors, such as past or present userbehavior, user preferences determined from a maintained user profile,computing resources available to handle user (or customer) interactions,and the like. When variable effects are possible, variable factorsrelevant for the effect can be determined. For example, availableresources and user behavior patterns can be queried to determine a mostappropriate effect for a given situation, as shown by step 315. Toillustrate, the rule with a variable effect can indicate that alikelihood of X percentage exists that a user is seriously interested inpurchasing a service from a Web application. Should a customer servicerepresentative be available (e.g., a business resource) for ateleconference call or an online chat, an interaction option to conversedirectly with the customer server representative can be presented via aWeb application user interface. Should a representative not be available(e.g., have an availability of at least Y percent or be available withina wait of Z seconds or less), then a different effect, such asautomatically directing a user to Web application portion for theservice, can be presented within the user interface.

In step 320, a determination can be made as to whether the action oreffect is designed to supplement, change, or override a user's request.

A supplement indicates that the user requested action is submittedunchanged to the Web application, but that an additional request foranother resource (one not explicitly specified by a user) is submittedto the Web application. For example, a user can request (e.g., HTTPrequest) information for a Family Insurance segment of a Web site. Auser experience adjustor can determine that the user is serious about afamily policy based on a set of analyzed requests previously made bythat user. The user experience adjustor can determine (via apre-configured rule) that is it appropriate to prompt the user to speakdirectly with a customer service representative. At the same time, theoriginal user request (for the Family Insurance segment of the Website), is still appropriate. Thus, the original request can be forwardedor routed to the Web server in an unmodified form. At the same time, aseparate HTTP request (causing a pop-up prompting the user of an optionto speak directly with a customer service agent) can be conveyed to theWeb server.

In a different example, a special officer (again via a popup) can bepresented to the user, where the popup is a server response to anadjustor issued request. The original request (for the Family Insurancesegment) can still be issued to the Web server, in an unmodified form.In both of the above examples, the original request is sent unmodifiedto the Web server, yet an additional request is also sent to the Webserver.

Stated differently, a RESTful request can be routed to the Web server,as shown by step 325. In step 330, an additional Web browser functioncan be optionally triggered as necessary. For example, a new pop-upwindow can be triggered for a client-side Web browser, where thesupplemental content is to be presented in the pop-up window. In anotherembodiment, the browser's size can be automatically expanded and a newframe, region, section, and the like can be presented to the user, wherethe supplemental content is provided in that new frame, region, section,portlet, etc. having its own address (thus having a unique HTTP requestassociated). The supplemental request can be sent in step 335.

A change can represent a situation where a rule causes a user issuedRESTful request to be changed or modified, which is indicated by themethod proceeding from step 320 to step 340. In step 340, an originalRESTful request can be modified to add an additional parameter, URLsub-section, to modify a property of a CSS style-sheet, to modify aparameter of dynamic Web application code, and the like. The request asmodified can be submitted to the Web server.

In one embodiment, the rule can cause an original request to beoverridden, as shown by the method proceeding from step 320 to step 350.In step 350, a Web resource that is different from the one that wasspecified in the original request can be determined. A request for thedifferent Web resource, which can be identified by a resource specificURI or other identifier can be issued to the Web server.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof code, which comprises one or more executable instructions forimplementing the specified logical function(s). It should also be notedthat, in some alternative implementations, the functions noted in theblock may occur out of the order noted in the figures. For example, twoblocks shown in succession may, in fact, be executed substantiallyconcurrently, or the blocks may sometimes be executed in the reverseorder, depending upon the functionality involved. It will also be notedthat each block of the block diagrams and/or flowchart illustration, andcombinations of blocks in the block diagrams and/or flowchartillustration, can be implemented by special purpose hardware-basedsystems that perform the specified functions or acts, or combinations ofspecial purpose hardware and computer instructions.

1. A method comprising: receiving a set of one or more RESTful requestsfrom a client computing device, where each of the RESTful requestsincludes a resource identifier for a Web server; determining at leastone pattern from analyzing the set of RESTful requests; comparing thepattern against a plurality of previously established patterns, whereinsaid plurality of previously established patterns are each indexedagainst a resource identifier of for the Web server; in response to thecomparing, matching the pattern to a corresponding previouslyestablished pattern; and conveying a pattern RESTful request to the Webserver for a Web resource identified by a matched resource identifier,wherein said matched resource identifier is the resource identifier thatis indexed against the previously established pattern, wherein thepattern RESTful request causes the Web server to serve the Web resourceidentified by the matched resource identifier to the client computingdevice, wherein the pattern RESTful request was not directly issued by auser of the client computing device, and wherein the matched resourceidentifier is for a resource not explicitly requested by a user of theclient computing device.
 2. The method of claim 1, wherein the Webresource served by the Web server responsive to receipt of the patternRESTful request causes a change to layout elements of a user interfacethat is displayed in a Web browser of the client computing device. 3.The method of claim 1, wherein the determined pattern indicates a userinterest that is inferred from the set of RESTful requests and that isinferred from timing between the set of RESTful requests, wherein thepattern RESTful request is a request to the Web server for additionalinformation specific to the user interest.
 4. The method of claim 1,wherein said set of RESTful requests comprise a plurality of RESTfulrequests, wherein each of the RESTful requests is for a Web page of aWeb application hosted on the Web server.
 5. The method of claim 4,wherein the pattern is indicative of a user's interest in a businessoffering available through the Web application, wherein the matchedresource identifier is an identifier for the business offering.
 6. Themethod of claim 1, wherein the pattern RESTful request is a modificationof a RESTful request from the client computing device, which is providedto the Web server instead of providing the RESTful request from theclient computing device.
 7. The method of claim 1, wherein thereceiving, determining, comparing, matching, and conveying are performedby a network element, which executes within a network to which theclient computing device and the Web server are communicatively linked,wherein the network element receives the set of RESTful requests fromthe client computing device and selectively routes the RESTful requestsof the set to the Web server.
 8. The method of claim 1, wherein thereceiving, determining, comparing, matching, and conveying are performedby a request pre-processing software component executing on the Webserver.
 9. The method of claim 1, wherein the receiving, determining,comparing, matching, and conveying are performed by a client-sideprogram executing on the client-computing device.
 10. The method ofclaim 1, wherein each of the RESTful requests is a HTTP request.
 11. Themethod of claim 1, further comprising: routing each of the received setof one or more RESTful requests from the client computing device to theWeb server, wherein each of the RESTful requests is a request for Webapplication content from a Web application hosted by the Web server. 12.The method of claim 1, wherein the pattern is indicative of userinterest in a business offering available via a Web application hostedby the Web server, wherein the resource corresponding to the matchedresource identifier comprises content related specifically to the userinterest, wherein the Web resource served by the Web server in responseto the pattern RESTful request causes a user interface of a Web browserof the client computing device to display the content that is related tothe user interest.
 13. A computer program product comprising a computerreadable storage medium having computer usable program code embodiedtherewith, the computer usable program code comprising: computer usableprogram code stored on a storage medium that upon being executed by aprocessor is operable to receive a set of one or more RESTful requestsfrom a client computing device, where each of the RESTful requestsincludes a resource identifier for a Web server; computer usable programcode stored on a storage medium that upon being executed by a processoris operable to determine at least one pattern from analyzing the set ofRESTful requests; computer usable program code stored on a storagemedium that upon being executed by a processor is operable to comparethe pattern against a plurality of previously established patterns,wherein said plurality of previously established patterns are eachindexed against a resource identifier of for the Web server; computerusable program code stored on a storage medium that upon being executedby a processor is operable to, in response to the comparing, match thepattern to a corresponding previously established pattern; and computerusable program code stored on a storage medium that upon being executedby a processor is operable to convey a pattern RESTful request to theWeb server for a Web resource identified by a matched resourceidentifier, wherein said matched resource identifier is the resourceidentifier that is indexed against the previously established pattern,wherein the pattern RESTful request causes the Web server to serve theWeb resource identified by the matched resource identifier to the clientcomputing device, wherein the pattern RESTful request was not directlyissued by a user of the client computing device, and wherein the matchedresource identifier is for a resource not explicitly requested by a userof the client computing device.
 14. The computer program product ofclaim 13, wherein the determined at least one pattern indicates a userinterest that is inferred from the set of RESTful requests and timingbetween the set of RESTful requests, wherein the pattern RESTfulrequests is a request to receive additional information specific to theuser interest from the Web server, wherein said set of RESTful requestscomprise a plurality of RESTful requests, wherein each of the RESTfulrequests is for a Web page of a Web application hosted on the Webserver.
 15. The computer program product of claim 13, wherein thereceiving, determining, comparing, matching, and conveying are performedby a network element, which executes within a network to which theclient computing device and the Web server are communicatively linked,wherein the network element receives the set of RESTful requests fromthe client computing device and selectively routes the RESTful requestsof the set to the Web server.
 16. A method comprising: routing aplurality of HTTP requests for Web application content from a clientcomputing device to a Web server; analyzing the routed HTTP requests forpatterns indicative of user interest in a business offering availablevia the Web application; and conveying an unrequested HTTP request tothe Web server for Web application content that was not explicitlyrequested from the client computing device, where per the unrequestedHTTP request, the Web server is to convey a response that providescontent from the Web application related specifically to the userinterest, which causes a user interface of a Web browser of the clientcomputing device to display the content that is related to the userinterest.
 17. The method of claim 16, further comprising: at the end ofeach application session involving the Web application, storing userinterest information gleaned from the HTTP requests in a user specificprofile; and consulting the user specific profile for each sessionbetween a user and the Web application to improve an ability todetermine the user interest and to responsively modify HTTP requests tothe Web server in accordance with this determined user interest.
 18. Themethod of claim 16, further comprising: organizing the Web applicationso that a plurality of different business functions are associated withdifferent resource identifiers; and parsing the HTTP requests todetermine business functions of interest to a user of the clientcomputing device during the analyzing of the routed HTTP requests. 19.The method of claim 16, further comprising: modifying at least oneparameter of a HTTP requests from the client computing device based onthe user interest; and routing the modified HTTP request to the Webserver.
 20. The method of claim 16, wherein the analyzing of the routedHTTP requests further comprises: determining at least one pattern fromanalyzing the routed HTTP requests; comparing the at least one patternagainst a plurality of previously established patterns, wherein saidplurality of previously established patterns are each indexed against aresource identifier of for the Web server; and in response to thecomparing, matching the at least one pattern to a correspondingpreviously established pattern, wherein the unrequested HTTP request isfor a Web resource identified by a matched resource identifier, whereinthe matched resource identifier is the resource identifier that isindexed against the at least one previously established pattern that wasmatched.